Upgrade recommendations

ABSTRACT

An example recommendation device can include a memory resource storing instructions executable by a processing resource to: determine dependencies of a hardware topology, determine properties of an upgrade to be performed on the hardware topology, compare the properties of the upgrade to the determined dependencies of the hardware topology to identify potential events, and generate a recommendation for deploying the upgrade on the hardware topology based on the comparison.

BACKGROUND

A data center can be a location where a plurality of computing devicesor computing systems are stored and operated. In some examples, a datacenter can utilize different types of hardware and/or instructionsoperating on the hardware. In other examples, the data center canutilize different computing systems that utilize different versions ofhardware, instructions operating on the hardware, and/or firmware. Thesetypes of data centers can be utilized to provide computing resources toa plurality of locations through a network.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is an example recommendation device for upgrade recommendationsincluding a processing resource and a memory resource consistent withthe present disclosure.

FIG. 2 is an example memory resource for upgrade recommendationsincluding instructions executable by a processing resource consistentwith the present disclosure.

FIG. 3 is an example system for upgrade recommendations consistent withthe present disclosure.

FIG. 4 is an example system for upgrade recommendations consistent withthe present disclosure.

FIG. 5 is an example system for upgrade recommendations consistent withthe present disclosure.

DETAILED DESCRIPTION

Computing devices can include components such as hardware, instructionsto perform a plurality of functions, and/or firmware. In some examples,the components can operate together to perform particular functions. Forexample, a first component can rely on or utilize a second component tohelp perform a particular function. In this example, the first componentmay depend on the second component to properly perform the particularfunction. In this example, a dependency can exist between the firstcomponent and the second component. In some examples, a computing deviceor computing system that utilizes a hardware topology can utilize aplurality of dependencies to perform particular functions.

In some examples, upgrades can be performed on the computing deviceand/or computing system. As used herein, upgrades can, for example,include alterations to hardware, instructions executed by the hardware,and/or firmware of the computing device and/or computing system. Forexample, an upgrade can include altering a version of the instructionsexecuted on the hardware from a first version to a relatively newersecond version. In this example, the second version may affect a firstcomponent directly and a second component indirectly. In this example,the second version may affect the second component indirectly when thefirst component and the second component include a dependency that isaffected by the second version.

Examples of the present disclosure provide for recommendation devices togenerate recommendations for deploying upgrades to components ofcomputing devices or computing systems. For instance, an examplerecommendation device can include a memory resource storing instructionsexecutable by a processing resource to: determine dependencies of ahardware topology, determine properties of an upgrade to be performed onthe hardware topology, compare the properties of the upgrade to thedetermined dependencies of the hardware topology to identify potentialevents, and generate a recommendation for deploying the upgrade on thehardware topology based on the comparison.

In this way, the recommendation device can provide recommendations fordeploying upgrades for particular devices within a hardware topologybased on dependencies between the particular devices and othercomponents of the hardware topology. In some examples, therecommendation that is generated can provide a better understanding ofthe potential effects of deploying the upgrade by consideringdependencies between the upgrade to be performed and the othercomponents of the hardware topology. In this way, an administrator ofthe hardware topology can better understand positive and/or negativeoutcomes prior to deploying the upgrade.

FIG. 1 is an example recommendation device 100 for upgraderecommendations including a processing resource 102 and a memoryresource 104 consistent with the present disclosure. A recommendationdevice 100, as used herein includes a device (e.g., physical device)used for generating recommendations for upgrades to devices of acomputing system (e.g., data center, server, computing device, etc.).Recommendation device 100 can be a combination of hardware andinstructions for generating upgrade recommendations for a computingsystem. The hardware, for example, can include processing resource 102and/or a memory resource 104 (e.g., machine readable memory (MRM),computer-readable medium (CRM), data store, etc.).

Processing resource 102, as used herein, can include a number ofprocessing resources capable of executing instructions stored by amemory resource 104. The instructions (e.g., machine-readableinstructions (MRI), software, firmware, etc.) can include instructionsstored on the memory resource 104 and executable by the processingresource 102 to implement a desired function (e.g., determinedependencies between hardware and/or software of a computing system,generate recommendations for an upgrade to be performed on the computingsystem, etc.). The memory resource 104, as used herein, can include anumber of memory components capable of storing non-transitoryinstructions that can be executed by processing resource 102. Memoryresource 104 can be integrated in a single device or distributed acrossmultiple devices. Further, memory resource 104 can be fully or partiallyintegrated in the same device as processing resource 102 (e.g., withinrecommendation device 100) or it can be separate but accessible to thatdevice and processing resource 102. Thus, it is noted that therecommendation device 100 can be implemented on an electronic deviceand/or a collection of electronic devices, among other possibilities.

The memory resource 104 can be in communication with the processingresource 102 via a communication link 106 (e.g., path). Thecommunication link 106 can be local or remote to an electronic deviceassociated with the processing resource 102. The memory resource 104includes instructions 108, 110, 112, 114. The memory resource 104 caninclude more or fewer instructions than illustrated to perform thevarious functions described herein. In some examples, instructions(e.g., software, firmware, etc.) 108, 110, 112, 114 can be downloadedand stored in memory resource 104 (e.g., MRM) as well as a hard-wiredprogram (e.g., logic), among other possibilities.

Instructions 108, when executed by a processing resource such asprocessing resource 102 can determine dependencies of a hardwaretopology. As used herein, a hardware topology can, for example, includehardware devices that utilize instructions and/or firmware to performfunctions. In some examples, the hardware devices or components of ahardware topology can, at times, perform functions together. As usedherein, a component of a hardware topology can, for example, includehardware devices, instructions stored or executed by the hardwaredevices, and/or firmware associated with the hardware devices.

In some examples, a first component of the hardware topology can includea dependency with a second component of the hardware topology. As usedherein, a dependency between components such as hardware components,instruction components (e.g., software components, etc.), and/orfirmware components can for example, include functional dependencieswhere a function being performed utilizes performance of multiplecomponents. For example, a computing device can include components suchas a hardware processor, random access memory (RAM), a memory resource,and instructions stored on the memory resource to perform a function. Inthis example, each of the components can include dependencies with othercomponents. In this example, an upgrade of one of the components canaffect the functionality of the other components.

In some examples, the dependencies can include dependencies betweenhardware components of the hardware topology. For example, a firsthardware component can be connected to a second hardware component. Inthis example, the first hardware component may not be able to functionwithout the support or interaction with the second hardware component.In some examples, the dependencies can include dependencies betweeninstructions stored on hardware components of the hardware topology. Forexample, a first hardware component can operate or utilize instructionsstored on a second hardware component. In this example, the firsthardware component may not be able to function without the instructionsstored on the second hardware component. In some examples, dependenciesbetween hardware components and instructions stored on the hardwarecomponents of the hardware topology. In these examples, the hardwarecomponents may rely on the instructions stored on hardware components.

Instructions 110, when executed by a processing resource such asprocessing resource 102 can determine properties of an upgrade to beperformed on the hardware topology. As described herein, an upgrade canbe an alteration of a component of a hardware topology. For example, theupgrade can be an alteration of a hardware component, an alteration ofinstructions, and/or an alteration of firmware. In some examples, theproperties of the upgrade can include, but are not limited to, a type ofcomponent, a component to be altered, functions of the upgrade,alterations of the upgrade, hardware devices of the hardware topology todeploy the upgrade, instructions associated with the hardware topologyto deploy the upgrade, among other properties that can describe how theupgrade will be deployed within the hardware topology. In this way, theproperties of the upgrade can be utilized to determine dependenciesbetween the upgrade and other components based on the dependenciesbetween the component to be altered and the other components of thehardware topology.

Instructions 112, when executed by a processing resource such asprocessing resource 102 can compare the properties of the upgrade to thedetermined dependencies of the hardware topology to identify potentialevents. As used herein, events can, for example, include alterations ofperformance from components of the hardware topology. For example, anevent can include a component not being compatible with the upgrade. Inanother example, an event can include an increased performance of acomponent or increased security of a component. In some examples,comparing the properties of the upgrade to the determined dependenciescan include comparing a converted support matrix of a first device to aconverted support matrix of a second device.

In some examples, comparing the properties of the upgrade to thedetermined dependencies of the hardware topology can include comparing asupport matrix of the upgrade or support matrix of a componentassociated with the upgrade to a support matrix of other components ofthe hardware topology. In some examples, a hardware topology can includea plurality of support matrices that can be associated with each or aportion of the plurality of components. In some examples, the supportmatrices of the hardware topology can be converted to a unified formatsuch that a first support matrix can be compared to a second supportmatrix in the same format. For example, the first support matrix and thesecond support matrix can be converted to an XML or XLS file format.

In some examples, the properties of the upgrade and/or the supportmatrix of the upgrade can be compared to the properties or supportmatrices of the other components of the hardware topology to identifyhow the upgrade may affect the other components of the hardwaretopology. For example, an upgrade to a first component may alter afunctionality of a second component when the first component and thesecond component include dependencies when performing particularfunctions. In this example, the comparison can identify compatibilitybetween the upgrade of the first component and a current functionalityof the second component. For example, the upgrade can be a versionupgrade for the first component. In this example, the comparison canidentify if the upgraded version of the first component is supported bythe current version of the second component.

Instructions 114, when executed by a processing resource such asprocessing resource 102 can generate a recommendation for deploying theupgrade on the hardware topology based on the comparison. As usedherein, a recommendation can, for example, include a notification thatoutlines how the upgrade is likely to perform if deployed on a componentor components of the hardware topology. In some examples, therecommendation can be generated for an administrator of the hardwaretopology. In other examples, the recommendation can be generated toauthorize a computing device to perform the upgrade.

In some examples, the generated recommendation can identify that theupgrade is likely to perform as expected from manufacturer settings. Forexample, an upgrade such as a security patch may receive a generatedrecommendation that the upgrade will provide the additional security tothe component and not provide compatibility issues with othercomponents. In a different example, the upgrade can include a newversion of instructions to be executed by the hardware topology. In thisexample, the new version of instructions (e.g., new version of softwareto be deployed, etc.) may not be compatible with a current version ofinstructions deployed on a different component. In this example, thegenerated recommendation can include the incompatibility as well asincremental upgrades that can be deployed to allow the differentcomponent to be compatible with the new version of the instructions.

In this way, the generated recommendation can provide an administratorwith information relating to the compatibility of an upgrade with ahardware topology prior to deploying the upgrade. In this way, theupgrade may not have to be deployed until the administrator is confidentthat the downtime of the hardware topology is at an acceptable point.For example, deploying an upgrade to a hardware topology that is notcompatible can increase the downtime of the hardware topology, whichcould lead to increased cost. In this example, the generatedrecommendation can allow an administrator or system controller todetermine when to deploy a particular upgrade and/or whether incrementalupgrades are to be deployed prior to deploying the upgrade. In someexamples, additional inputs from an administrator can be utilized whencomparing the properties of the upgrade to the properties of the othercomponents. In this way, components deemed to be essential or vital to aparticular business can be a focus of the comparison to ensure that thedeemed essential or vital components are compatible with a particularupgrade.

FIG. 2 is an example memory resource 204 for upgrade recommendationsincluding instructions executable by a processing resource consistentwith the present disclosure. In some examples, the memory resource 204can be part of a recommendation device (e.g., recommendation device 100,etc.) to generate recommendation for performing an upgrade on acomponent or devices of a computing system.

The memory resource 204 can be in communication with a processingresource via a communication link (not shown). The memory resource 204includes instructions 222, 224, 226, 228. The memory resource 204 caninclude more or fewer instructions than illustrated to perform thevarious functions described herein. In some examples, instructions(e.g., software, firmware, etc.) 222, 224, 226, 228 can be downloadedand stored in memory resource 204 (e.g., MRM) as well as a hard-wiredprogram (e.g., logic), among other possibilities.

Instructions 222, when executed by a processing resource can determineproperties of an upgrade to be deployed on a device of a topology. Asdescribed herein, the properties of an upgrade can include a componentto be altered when the upgrade is deployed or what type of functions theupgrade is to perform when deployed. In some examples, the properties ofthe upgrade can be utilized to determine other components of thehardware topology that may be affected or altered when the upgrade isdeployed.

In some examples, the device that is to be upgraded can be determined.For example, the upgrade can be a security patch for an operatingsystem. In this example, the upgrade can be deployed on the operatingsystem and utilize the operating system to receive data to be utilizedby the security features of the operating system. In this example, theoperating system can be the component to be altered by the upgrade andmay affect other components associated with the operating system and/orthe security features of the operating system. In other example, theupgrade can be for a particular device within the hardware topology. Forexample, the firmware for a hardware device can be upgraded and thefirmware upgrade can affect other components of the hardware topologythat interact with the hardware device. Thus, the upgrade to thefirmware of the hardware device can affect other hardware devices and/orinstructions for other hardware devices of the hardware topology.

Instructions 224, when executed by a processing resource can determinehardware and instruction dependencies of the device with other deviceswithin the topology. In some examples, the hardware and instructiondependencies of the device can include hardware dependencies between thedevice and other components of the topology. For example, the hardwaredependencies can be other hardware components of the topology thatutilize resources of the device and/or hardware components of thetopology that are utilized by the device. In this way, the hardwaredependencies can be utilized to compare a support matrix of the upgradeto the support matrix of the hardware that includes dependencies withthe device.

In other examples, the hardware and instruction dependencies of thedevice can include instruction dependencies between instructions of thedevice and instructions of other components of the topology. Forexample, instructions of the other components may not be compatible withparticular versions of instructions. In this example, a support matrixof the instructions of the device can be compared with support matricesof instructions utilized or stored on other components of the topology.In this way, alterations such as the upgrade to the instructions of thedevice can be utilized to generate a recommendation that indicates howthe upgrade may affect other instructions for other components of thetopology.

In some examples, the memory resource 204 can include instructionsexecutable by a processing resource to probe devices and instructions ofthe topology to determine the hardware and instruction dependencies ofthe device. In some examples, probing the devices and instructions ofthe topology can include sending instructions and receiving informationthrough responses with the devices of the topology. In this way,additional information can be retrieved from probing the devices of thetopology. In some examples, the additional information from probing thedevices of the topology can be stored in a database with thedependencies determined from support matrix comparisons.

Instructions 226, when executed by a processing resource can compare theproperties of the upgrade to the hardware and instruction dependenciesto determine intermediate upgrades. As described herein, the propertiesof the upgrade can be defined by a support matrix. In some examples, thesupport matrix of the upgrade can be converted to a uniform format withthe support matrices of the hardware and instructions of the topology toidentify potential events that may occur if the upgrade were to bedeployed.

In some examples, the identified potential events can be utilized toidentify intermediate upgrades or alterations of the topology. Forexample, an instructions upgrade to a device may not be compatible withinstructions of a different component or device of the topology. In thisexample, a reason for the non-compatibility of the upgrade with thedifferent component or device can be utilized to determine otherupgrades (e.g., intermediate upgrades) that can be performed to providecompatibility with the upgrade. For example, the upgrade can be aversion upgrade for a first device that may not be compatible with aversion of a second device that includes dependencies with the firstdevice. In this example, a different version of the second device may becompatible with the upgraded version of the first device. In thisexample, the intermediate upgrades can include the upgraded version ofthe second device to be deployed prior to the upgraded version of thefirst device such that the second device is not in a non-compatiblestate after the deployment of the upgraded version of the first device.

Instructions 228, when executed by a processing resource can generate arecommendation for deploying the upgrade on the device based on thecomparison, wherein the recommendation includes an order of deploymentfor the intermediate upgrades and the upgrade to be deployed on thedevice. As described herein, the recommendation for deploying theupgrade on the device can include a text recommendation to anadministrator that identifies potential events associated with deployingthe upgrade on the device at a particular time (e.g., prior tointermediate updates, current state of the device, etc.).

In some examples, the memory resource 204 can include instructions todetermine a minimum number of intermediate upgrades based on thecomparison. For example, a plurality of deployment orders can becompared for intermediate upgrades of the topology to allow the upgradeto be deployed. In this example, a deployment order of intermediateupgrades can be selected based on a quantity of intermediate upgradesand/or a quantity of time to deploy the intermediate upgrades. In thisway, a set of intermediate upgrades can be selected to minimize aquantity of time to deploy the intermediate upgrades and thus minimizethe time to deploy the upgrade on the topology. That is, theinstructions of the memory resource 204 can be executed to determine aminimum invasive number of intermediate upgrades based on a quantity oftime the topology would be offline during the number of intermediateupgrades.

In some examples, the recommendation can be directed to a controller ofthe topology such that the controller deploys the upgrade according tothe recommendation. For example, the recommendation can includeinstructions for the controller to deploy the upgrade on the device. Inthis example, the instructions can include obtaining or requestingauthorization before proceeding, proceeding with a designated order ofdeployment based on the recommendation, among other instructions fordeploying or refraining from deploying the upgrade.

FIG. 3 is an example system 330 for upgrade recommendations consistentwith the present disclosure. In some examples, the system 330 caninclude a topology 334. In some examples, the topology 334 can include aplurality of components 336-1, 336-2, 336-3. Even though FIG. 3illustrates three components 336-1, 336-2, 336-3, additional or fewercomponents can be part of the topology 334. In some examples, thetopology 334 can be a hardware topology that includes a plurality ofhardware components.

In some examples, the topology 334 can include hardware components,instruction components, and/or firmware components that interact withother components of the topology 334. For example, component 336-1 canbe a hardware component that includes a dependency with component 336-2when component 336-2 is an instruction component. In this example,component 336-2 can be an instruction component that includes adependency with component 336-3 when component 336-3 is a firmwarecomponent. In some examples, the plurality of components 336-1, 336-2,336-3 can each be utilized to perform a particular function and thus caninclude dependencies. As described herein, the dependencies between theplurality of components 336-1, 336-2, 336-3 can lead to an alteration ofone component affecting the other components.

In some examples, the system 330 can include a database 332. Thedatabase 332 can include memory resources for storing data. In someexamples, the database 332 can be coupled be coupled to the topology 334and/or a recommendation device 300. For example, the recommendationdevice 300 can be communicatively coupled to the database through path338. As used herein, communicatively coupled can, for example, include acommunication pathway that exists between components to allowcommunication packets or messages to be exchanged between thecomponents. In some examples, the database 332 can be utilized to storedependencies between the plurality of components 336-1, 336-2, 336-3 ofthe topology 334. In some examples, the recommendation device 300 canutilize the dependencies stored within the database 332 to generate arecommendation for deploying an upgrade on the topology 334 and/or on acomponent of the plurality of components 336-1, 336-2, 336-3.

In some examples, the system 330 can include a recommendation device300. In some examples, the recommendation device 300 can becommunicatively coupled to the database 332 through path 338 andcommunicatively coupled to the topology 334 through path 340.Recommendation device 300 can be a combination of hardware andinstructions for generating upgrade recommendations for a computingsystem. The hardware, for example, can include processing resource 302and/or a memory resource 304 (e.g., machine readable memory (MRM),computer-readable medium (CRM), data store, etc.).

As described herein, the memory resource 304 can be in communicationwith the processing resource 302 via a communication link. The memoryresource 304 includes instructions 342, 344, 346, 348, 350. The memoryresource 304 can include more or fewer instructions than illustrated toperform the various functions described herein. In some examples,instructions (e.g., software, firmware, etc.) 342, 344, 346, 348, 350can be downloaded and stored in memory resource 304 (e.g., MRM) as wellas a hard-wired program (e.g., logic), among other possibilities.

Instructions 342, when executed by a processing resource such asprocessing resource 302 can determine a dependency between a firstcomponents and a second component of the plurality of components 336-1,336-2, 336-3 of the topology 334. As described herein, the dependencybetween the first component can include a hardware dependency, aninstruction dependency, and/or a firmware dependency, among other typesof dependencies that can exist between components of a topology 334. Insome examples, the dependencies can relate to functions performed by thefirst component that also utilize functions performed by the secondcomponent. In some examples, the first component and the secondcomponent can be components of the topology 334. As described herein,the dependencies between the first component and the second componentcan be based on a comparison between a first support matrix for thefirst component and a second support matrix of the second component. Insome examples, the first support matrix and the second support matrixcan be converted from a first file type to a unified file type such asXML.

Instructions 344, when executed by a processing resource such asprocessing resource 302 can determine properties of an upgrade to beperformed on the first component. In some examples, the upgrade can be ahardware upgrade, an instructions upgrade, and/or a firmware upgrade forthe topology 334 and/or a component of the topology 334. For example,the upgrade can be an instructions patch for instructions associatedwith component 336-1. In this examples, the properties of the upgrade tobe performed on the component 336-1 can include, but is not limited to:the component 336-1 to which the upgrade is to be deployed, the type ofupgrade that is to be deployed on the component 336-1, the function ofthe upgrade to be deployed, among other properties that can be utilizedto describe or classify the upgrade. In some examples, determining theproperties of the upgrade can include instructions to determine aportion of the plurality of components 336-1, 336-2, 336-3 that areaffected by the upgrade. For example, which of the portion of theplurality of components 336-1, 336-2, 336-3 are altered by the upgradeand/or have dependencies with components that are altered by theupgrade.

Instructions 346, when executed by a processing resource such asprocessing resource 302 can store the dependency between the firstcomponent and the second component and the determined properties of theupgrade in the database. In some examples, the dependency between thefirst component and the second component can define a relationshipbetween the first component and the second component. For example, thedependency can describe physical connections, communication connections,virtual connections, and/or interactions between the first component andthe second component. In some examples, the dependencies between thefirst component and the second component can be based on interactionsbetween the first component and the second component. For example, theinteractions can include communications between the first component andthe second component, functions that are shared between the firstcomponent and the second component, and/or functions that are partiallyperformed by the first component and the second component. In this way,the dependencies can define how a change in the first component mayaffect the second component and vice versa.

In some examples, the dependencies between the first component and thesecond component can be compared to the properties of the upgrade. Insome examples, the properties of the upgrade can be utilized to generatea support matrix for the upgrade in a unified format with the firstsupport matrix of the first component and the second support matrix ofthe second component. In other examples, a support matrix of the upgradecan be provided by a distributer of the upgrade and the support matrixof the upgrade can be converted to the unified format to be comparedwith the first support matrix of the first component and the secondsupport matrix of the second component.

Instructions 348, when executed by a processing resource such asprocessing resource 302 can compare the properties of the upgrade toproperties of the first component stored in the database 332 and comparethe properties of the upgrade to the dependency between the firstcomponent and the second component stored in the database 332. In someexamples, comparing the properties of the upgrade to the properties ofthe first component can include comparing the first support matrix forthe first component to a support matrix of the upgrade. In someexamples, the comparison between the properties of the first componentand the upgrade can be utilized to determine if the upgrade will causean event when deployed on the first component in a current state. Thatis, the comparison can be utilized to determine if the properties of thefirst component are able to support the upgrade when the upgrade isdeployed.

In some examples, the comparison between the first component and theupgrade can identify an intermediate upgrade to be performed on thefirst component prior to deploying the upgrade. For example, the upgradecan be an instruction upgrade that may utilize version two of firmwareon the first component. In this example, if the current state of thefirst component is utilizing version one of the firmware, the comparisonmay identify that the first component should deploy an intermediateupgrade to alter from version one to version two of the firmware. Inthis example, the intermediate upgrade of the first component can allowthe upgrade to be deployed without causing an event. As describedherein, an event can include a malfunction or unwanted state to occur onthe topology 334 and/or on a component of the topology 334.

In some examples, comparing the properties of the upgrade to thedependency between the first component and the second component storedin the database 332 can include comparing corresponding portions of thesecond support matrix of the second component to the support matrix ofthe upgrade. In some examples, the corresponding portion of the secondsupport matrix can be portions identified based on the dependenciesbetween the first component and the second component. For example, thedependencies can be identified based on comparing the first supportmatrix to the second support matrix. In this example, portions of thesecond support matrix can be identified that identify portions of thesupport matrix that are dependent on properties of the first supportmatrix and/or the first component. In this way, a portion of the secondsupport matrix that is specific to the dependencies between the firstcomponent and the second component can be utilized instead of comparingthe entire second support matrix of the second component to the upgrade.

In this way, properties of the second component that share dependencieswith the first component are compared to the properties of the upgradewhile properties of the second component that do not share dependencieswith the first component are not compared to the properties of theupgrade. This can eliminate potential false events. As used herein, afalse event can, for example, include an event that is identified butwould not produce an actual event. For example, a false event can be anincompatibility between the upgrade and a feature of the secondcomponent when the upgrade is to be deployed on the first component. Inthis example, a false event could be identified if the feature of thesecond component does not share a dependency with the first component.That is, the upgrade may not affect or create the false event since theupgrade may not interact or affect the feature of the second component.

Instructions 350, when executed by a processing resource such asprocessing resource 302 can generate a recommendation that includes anintermediate upgrade of the second component based on the dependency tobe performed prior to the upgrade to be performed on the firstcomponent. As described herein, the generated recommendation can be atext recommendation that can be provided to a human user or thegenerated recommendation can be instructions that can be provided to aprocessing resource of a computing device such as a controller. In someexamples, the recommendation includes instructions that a portion of theintermediate upgrades are to be deployed on the other devices within thetopology.

In some examples, the memory resource 304 an include instructions todetermine an intermediate upgrade that is prevented from being performedon the first component based on the properties of the upgrade to beperformed on the first component. In some examples, an intermediateupgrade may be prevented from being deployed due to other dependenciesnot associated with a current upgrade. For example, the first componentmay have a dependency that may be affected by the intermediate upgrade.In this example, the intermediate upgrade is prevented from beingdeployed on the first component.

As described herein, the recommendation can include the intermediateupgrades for deploying the upgrade to the topology 334. In someexamples, the generated recommendation can include an order ofdeployment with regards to the intermediate upgrades. For example, therecommendation can define an order of deploying a plurality ofintermediate upgrades to avoid potential events that can be caused bydeploying the intermediate upgrades out of order.

In some examples, the system 330 can be utilized to identify anadditional component to be added to the system 330. For example, thesystem 330 can be utilized to identify a third component to be added tothe topology 334, determine a dependency between the third component andthe first component, upgrade the database 332 with the determineddependency between the third component and the first component, and/orcompare the properties of the upgrade stored in the database to thedependency between the first component and the third component stored inthe database 332. In this way, the database 332 can be updated in realtime and is up to date when additional components are added or whencomponents are removed from the system 330.

FIG. 4 is an example system 460 for upgrade recommendations consistentwith the present disclosure. In some examples, the system 460 can be adatacenter that includes a topology 434 that can include components436-1, 436-2, 436-3. In some examples, the components 436-1, 436-2,436-3 can each include a plurality of components (e.g., hardware,workload for the hardware, operating system, hypervisor, firmware,firmware for network storage cards, etc.).

In some examples, the system 460 can include a management platform 464that can be utilized to monitor and/or manage the topology 434. In someexamples, the management platform 464 can be utilized to generate alertswhen events are determined by monitoring devices of the topology 434. Insome examples, the management platform 464 can receive information froma cloud management platform 462. In some examples, the cloud managementplatform 462 can be utilized to monitor and manage cloud resourcesgenerated by the topology 434. In some examples, the cloud managementplatform 462 can generate alerts in response to an event that hasoccurred on virtual resources generated by the topology 434. In someexamples, the cloud management platform 462 can send alerts ornotifications to the management platform 464 and the management platform464 can make alterations to the topology in response to the alerts ornotifications.

In some examples, the system 460 can include a recommendation device400. The recommendation device 400 can be communicatively coupled to themanagement platform 464. In some examples, the recommendation device 400can be the same or similar device as recommendation device 100 asreferenced in FIG. 1 , device utilizing memory resource 204 asreferenced in FIG. 2 , and/or recommendation device 300 as referenced inFIG. 3 . That is, the recommendation device 400 can determinedependencies of the plurality of components 436-1, 436-2, 436-3 andcompare the dependencies to properties of an upgrade to be deployed onthe topology 434. In some examples, the recommendation device 400 cangenerate recommendations and provide the recommendations to themanagement platform 464. In some examples, the management platform 464can send the recommendations to an administrator of the topology 434. Inother examples, the management platform 464 can utilize therecommendation to deploy the upgrade and/or deploy the upgrade withother intermediate upgrades as described herein.

FIG. 5 is an example system 580 for upgrade recommendations consistentwith the present disclosure. In some examples, the system 580 caninclude the same or similar features as system 460 as referenced in FIG.4 . For example, system 580 can include a recommendation device 500coupled to a data center 560. In some examples, the data center 560 canbe a system for storing and utilizing computing devices (e.g., servers,etc.). In some examples, the data center 560 can include a cloudmanagement platform 562 and/or a management platform 564 to managecomponents 584-1, 584-2, 584-N of the data center 560. In some examples,the components 584-1, 584-2, 584-N can be firmware components.

In some examples, the components can represent firmware componentsoperating on separate devices of the data center 560. For example, thecomponent 584-1 can operate on a first device, the second component584-2 can operate on a second device, and a third component 584-N canoperate on an Nth device. In this example, the component 584-1 can be afirst component that consists of a first version of the firmware, thecomponent 584-2 can be a second component that consists of a secondversion of the firmware, and the component 584-N can be an Nth componentthat consists of an Nth version of the firmware.

As described herein, the recommendation device 500 can be utilized togenerate recommendations for deploying an upgrade to a component of thedata center 560. In some examples, the recommendation device 500 candetermine the components 584-1, 584-2, 584-N and corresponding firmwareversions of the components 584-1, 584-2, 584-N. In some examples, thediscovery device 500 can utilize the discovered components 584-1, 584-2,584-N and/or firmware versions of the components 584-1, 584-2, 584-N toidentify corresponding support matrix for the components 584-1, 584-2,584-N and convert the corresponding support matrices to a unified formatsuch that the plurality of support matrices can be compared to identifydependencies between the components 584-1, 584-2, 584-N. In someexamples, the recommendation device 500 can be communicatively coupledto a database 532. In these examples, the dependencies between thecomponents 584-1, 584-2, 584-N can be stored in the database 532 to beutilized when a particular upgrade is selected to be deployed on thedatabase 560.

In some examples, the recommendation device 500 can receive thecomponent support matrices 586 for the plurality of components 584-1,584-2, 584-N. In some examples, the system 580 can include anadministrator 590. The administrator 590 can be a human user or acontroller. In some examples, the administrator 590 can identifyadditional dependencies that are not identified by the comparison of thesupport matrices 586. For example, the administrator 590 may identifyadditional components that may be sensitive to upgrades of thecomponents 584-1, 584-2, 584-N. In this way, the recommendation device500 can consider the discovered dependencies as well as the additionaldependencies provided by the administrator 590. As described herein, thediscovered dependencies and the additional dependencies from theadministrator 590 can be stored in the database 532. As describedherein, the recommendation device 500 can generate recommendations 588based on the dependencies stored in the database 532.

The figures herein follow a numbering convention in which the firstdigit corresponds to the drawing figure number and the remaining digitsidentify an element or component in the drawing. Elements shown in thevarious figures herein can be added, exchanged, and/or eliminated so asto provide a number of additional examples of the present disclosure. Inaddition, the proportion and the relative scale of the elements providedin the figures are intended to illustrate the examples of the presentdisclosure and should not be taken in a limiting sense. Further, as usedherein, “a number of” an element and/or feature can refer to any numberof such elements and/or features.

What is claimed:
 1. A recommendation device comprising a hardwareprocessing resource in communication with a memory resource includinginstructions executable by the hardware processing resource to:determine dependencies of a hardware topology, wherein the dependenciescomprise a dependency of hardware components of the hardware topology;determine properties of an upgrade to be performed on the hardwaretopology, wherein the upgrade alters a version of instructions executedon the hardware topology from a first version to a newer second version;compare the properties of the upgrade to the determined dependencies ofthe hardware topology to identify potential events; generate arecommendation for deploying the upgrade on the hardware topology basedon the comparison, wherein the recommendation indicates how the upgradeaffects other instructions for other components of the hardwaretopology; wherein the dependencies of the hardware topology include:dependencies between instructions stored on the hardware components ofthe hardware topology; and dependencies between the hardware componentsand the instructions stored on the hardware components of the hardwaretopology, wherein the instructions to determine dependencies of thehardware topology include instructions to: determine a support matrixfor components of the hardware topology; and convert the support matrixto a unified file format, and wherein the instructions to compare theproperties of the upgrade to the determined dependencies of the hardwaretopology include instructions to compare a converted support matrix of afirst device to a converted support matrix of a second device; andeliminate potential false events, properties of the second device thatshare dependencies with the first device are compared to the propertiesof the upgrade while properties of the second device that do not sharedependencies with the first device are not compared to the properties ofthe upgrade.
 2. The recommendation device of claim 1, wherein therecommendation includes a plurality of intermediate upgrades to thehardware topology prior to deploying the upgrade.
 3. The recommendationdevice of claim 1, wherein the properties of the upgrade include devicesof the hardware topology to deploy the upgrade and instructionsassociated with the hardware topology to deploy the upgrade.
 4. Therecommendation device of claim 1, wherein the instructions to determinedependencies of the hardware topology include instructions to determinea version of instructions stored on the hardware components of thehardware topology.
 5. A non-transitory computer-readable medium storinginstructions executable by a hardware processing resource to: determineproperties of an upgrade to be deployed on a device of a hardwaretopology, wherein the upgrade alters a version of instructions executedon the hardware topology from a first version to a newer second version;determine hardware dependencies and instruction dependencies of thedevice with other devices within the hardware topology; compare theproperties of the upgrade to the hardware dependencies and instructiondependencies to determine intermediate upgrades; generate arecommendation for deploying the upgrade on the device based on thecomparison, wherein the recommendation includes an order of deploymentfor the intermediate upgrades and the upgrade to be deployed on thedevice, wherein the recommendation indicates how the upgrade affectsother instructions for other components of the hardware topology,wherein the recommendation includes instructions that a portion of theintermediate upgrades are to be deployed on the other devices within thehardware topology, and wherein the recommendation includes an order ofdeployment for each of the intermediate upgrades to be deployed on eachof the other devices based on the hardware and instruction dependenciesof the other devices, determine a minimum number of intermediateupgrades based on the comparison, wherein the instructions to determinea minimum number of intermediate upgrades includes instructions todetermine a minimum invasive number of intermediate upgrades based on aquantity of time the hardware topology are being offline during thenumber of intermediate upgrades; and eliminate potential false events,properties of a second device that share dependencies with a firstdevice are compared to the properties of the upgrade while properties ofthe second device that do not share dependencies with the first deviceare not compared to the properties of the upgrade.
 6. The medium ofclaim 5, comprising the instructions executable to probe devices andinstructions of the hardware topology to determine the hardware andinstruction dependencies of the device.
 7. A system comprising: aplurality of components of a hardware topology, wherein the plurality ofcomponents includes hardware components; a database stored in a memoryresource communicatively coupled to the hardware topology; and arecommendation device communicatively coupled to the database, therecommendation device comprising a hardware processing resource incommunication with the memory resource including instructions executableby the hardware processing resource to: determine a dependency between afirst component and a second component of the plurality of components ofthe hardware topology; determine properties of an upgrade to beperformed on the first component, wherein the upgrade alters a versionof instructions executed on the hardware topology from a first versionto a newer second version; store the dependency between the firstcomponent and the second component and the determined properties of theupgrade in the database; compare the properties of the upgrade toproperties of the first component stored in the database and compare theproperties of the upgrade to the dependency between the first componentand the second component stored in the database; generate arecommendation that includes an intermediate upgrade of the secondcomponent based on the dependency to be performed prior to the upgradeto be performed on the first component, wherein the recommendationindicates how the upgrade affects other instructions for othercomponents of the hardware topology; convert a support matrix for thefirst component and a support matrix for the second component into aunified format, wherein the instructions to determine the dependencybetween the first component and the second component includesinstructions to compare the support matrix for the first component andsecond component in the unified format to determine how properties ofthe first component affect properties of the second component, whereinthe instructions to determine the properties of the upgrade includeinstructions to determine a portion of the plurality of components thatare affected by the upgrade, and wherein the portion of the plurality ofcomponents include dependencies with hardware associated with the firstcomponent; and eliminate potential false events, properties of thesecond component that share dependencies with the first component arecompared to the properties of the upgrade while properties of the secondcomponent that do not share dependencies with the first component arenot compared to the properties of the upgrade.
 8. The system of claim 7,comprising instructions to determine an intermediate upgrade that isprevented from being performed on the first component based on theproperties of the upgrade to be performed on the first component.
 9. Thesystem of claim 7, comprising instructions to: identify a thirdcomponent to be added to the hardware topology; determine a dependencybetween the third component and the first component; upgrade thedatabase with the determined dependency between the third component andthe first component; and compare the properties of the upgrade stored inthe database to the dependency between the first component and the thirdcomponent stored in the database.